package org.jeecg.modules.online.desform.constant;

import org.jeecg.common.util.oConvertUtils;

/**
 * 表单设计组件类型
 */
public enum WidgetTypes {

    /** 单行文本 */
    INPUT("input", "单行文本"),
    /** 多行文本 */
    TEXTAREA("textarea", "多行文本"),
    /** 计数器 */
    NUMBER("number", "计数器"),
    /** 单选框组 */
    RADIO("radio", "单选框组"),
    /** 多选框组 */
    CHECKBOX("checkbox", "多选框组"),
    /** 时间选择器 */
    TIME("time", "时间选择器"),
    /** 日期选择器 */
    DATE("date", "日期选择器"),
    /** 评分 */
    RATE("rate", "评分"),
    /** 颜色选择器 */
    COLOR("color", "颜色选择器"),
    /** 下拉选择框 */
    SELECT("select", "下拉选择框"),
    /** 开关 */
    SWITCH("switch", "开关"),
    /** 滑块 */
    SLIDER("slider", "滑块"),
    /** 自定义 */
    BLANK("blank", "自定义"),
    /** 图片上传 */
    IMGUPLOAD("imgupload", "图片上传"),
    /** 文件上传 */
    FILE_UPLOAD("file-upload", "文件上传"),
    /** 编辑器 */
    EDITOR("editor", "编辑器"),
    /** 级联选择器 */
    CASCADER("cascader", "级联选择器"),
    /** 按钮 */
    BUTTON("button", "按钮"),
    /** 按钮组 */
    BUTTONS("buttons", "按钮组"),
    /** 文本 */
    TEXT("text", "文本"),
    /** 分隔符 */
    DIVIDER("divider", "分隔符"),
    /** 省市级联动 */
    AREA_LINKAGE("area-linkage", "省市级联动"),
    /** 栅格布局 */
    GRID("grid", "栅格布局"),
    /** 卡片 */
    CARD("card", "卡片"),
    /** Tabs */
    TABS("tabs", "Tabs"),
    /** 设计子表 */
    SUB_TABLE_DESIGN("sub-table-design", "设计子表"),
    /** 用户组件 */
    SELECT_USER("select-user", "用户组件"),
    /** 部门组件 */
    SELECT_DEPART("select-depart", "部门组件"),
    /** 表字典 */
    TABLE_DICT("table-dict", "表字典");

    private String type;
    private String name;

    WidgetTypes(String type, String name) {
        this.type = type;
        this.name = name;
    }

    public String getType() {
        return type;
    }

    public String getName() {
        return name;
    }

    /**
     * 比较两个值是否相等
     */
    public boolean compare(Object value) {
        WidgetTypes type = WidgetTypes.getByValue(value);
        return type == this;
    }

    public static WidgetTypes getByValue(Object value) {
        if (oConvertUtils.isEmpty(value)) {
            return null;
        }
        return getByValue(value.toString());
    }

    public static WidgetTypes getByValue(String value) {
        if (oConvertUtils.isEmpty(value)) {
            return null;
        }
        for (WidgetTypes val : values()) {
            if (val.getType().toLowerCase().equals(value.toLowerCase())) {
                return val;
            }
        }
        return null;
    }
}
